/* ****************************** usage: 函数名.caller ******************************* */
function callerDemo() {
	if (callerDemo.caller) {
		var a = callerDemo.caller; // 返回调用函数(调用当前函数)的引用
		// a();
	} else {
		alert("this is a top function");
	}
}
function handleCaller() {
	callerDemo();
}

// handleCaller();

/* ****************************** usage: arguments.callee ****************************** */

// 用于验证参数
function calleeLengthDemo(arg1, arg2) {
	if (arguments.length == arguments.callee.length) {
		window.alert("验证形参和实参长度正确！");
		return;
	} else {
		alert("实参长度：" + arguments.length);
		alert("形参长度： " + arguments.callee.length);
		alert("形参长度： " + calleeLengthDemo.length);
	}
}

calleeLengthDemo(2);

// 调用函数自身(可用于递归运算)
function calleeDemo(arg) {
	alert(arg);
	// arguments.callee(5);
}

// calleeDemo(10);

// 递归累加
function sum(n) {
	if (n <= 0)
		return 0;
	else
		return n + arguments.callee(n - 1);
}